<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body></body>
  <script>
    const arr = [
      1,
      2,
      3,
      4,
      [1, 2, 3, [1, 2, 3, [1, 2, 3]]],
      5,
      "string",
      { name: "吃藕" },
    ];
    function flat(arr) {
      let arrResult = [];
      arr.forEach((item) => {
        if (Array.isArray(item)) {
          console.log(arguments.callee);
          arrResult = arrResult.concat(flat(item));
          //   arguments 的主要用途是保存函数参数， 但这个对象还有一个名叫 callee 的属性，该属性是一个指针，指向拥有这个 arguments 对象的函数。
          // arrResult.push(...arguments.callee(item));
        } else {
          arrResult.push(item);
        }
      });
      return arrResult;
    }
    console.log(flat(arr));
  </script>
</html>
